package org.example.controller;

import org.example.common.JsonCode;
import org.example.entity.Student;
import org.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/student123")
// 如果只有一个 @Controller 注解,查询需要返回一个具体的视图名称(web资源),如果没有视图就会返回404,需要配合 @ResponseBody
public class StudentController {
    // 非restful请求

    @Autowired
    private StudentService studentService;

    // 查询: get请求
    @GetMapping("/getAll")
    public List<Student> getAll() {
        return studentService.getAll();
    }

    @GetMapping("/getById")
    // 如果前端的变量名和后端变量名不同,使用@RequestParam
    public Student getById(String id) {
        return studentService.getById(id);
    }

    /*
    *
    *   添加/修改/删除操作 后,需要为前端提供的信息有:
    *       code 200 表示成功
    *       msg 表示响应信息
    *
    *   查询操作后,需要为前端提供的信息有:
    *       code 200 表示成功
    *       data 表示查询数据
    *
    * */

    // 增删改: post请求
    /*
    *
    *   浏览器: ?id=A00001&name=zs&age=23
    *   形参接收方式一: add(String id,String name,String age) -- 可读性强
    *   形参接收方式二: add(Student s) 底层就是s.setId  s.setName  s.setAge -- 方便
    *
    * */
    @PostMapping("/add")
    //public String add(String id, String name, Integer age) {
    //public String add(Student s) {
    public JsonCode add(@RequestBody Student s) { // @RequestBody 用于接收json数据
        studentService.insert(s);
        return JsonCode.getJson();
    }

    @PostMapping("/update")
    public JsonCode update(Student s) {
        studentService.update(s);
        return JsonCode.getJson();
    }

    @PostMapping("/delete")
    public JsonCode delete(String id) {
        studentService.delete(id);
        return JsonCode.getJson();
    }

}
